// 工具类函数
import { lazy } from 'react'
class baseUtils {
    timeFun = {
        // 获取当前时间
        getCurrentTime() {
            const date = new Date()
            const year = date.getFullYear()
            const month = date.getMonth() + 1
            const day = date.getDate()
            const hour = date.getHours()
            const minute = date.getMinutes()
            const second = date.getSeconds()
            return `${year}-${month}-${day} ${hour}:${minute}:${second}`
        },
        // 获取当前时间戳
        getCurrentTimestamp() { return Date.now() },
        // 时间戳转时间
        timestampToTime(timestamp: number) { return new Date(timestamp).toLocaleString() },
        // 时间戳转特定格式时间
        timestampToTimeFormat(timestamp: number, format: string = 'yyyy-MM-dd hh:mm:ss') {
            const date = new Date(timestamp);
            // 定义各个格式的映射
            const map: { [key: string]: string | number } = {
                'M+': date.getMonth() + 1, // 月份从0开始计数，需要+1
                'd+': date.getDate(),
                'h+': date.getHours(),
                'm+': date.getMinutes(),
                's+': date.getSeconds(),
                'q+': Math.floor((date.getMonth() + 3) / 3), // 季度
                'S': date.getMilliseconds(), // 毫秒
            };
            // 替换年份
            if (/(y+)/.test(format)) {
                format = format.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
            }
            // 替换其他格式
            for (const [k, v] of Object.entries(map)) {
                if (new RegExp(`(${k})`).test(format)) {
                    format = format.replace(RegExp.$1, RegExp.$1.length === 1 ? v.toString() : ('00' + v).substr(('' + v).length));
                }
            }
            return format;
        }
    }
    // 路由懒加载处理
    routerFun = {
        lazyLoad: (url: string) => {
            const Module = lazy(() => {
                return new Promise((resolve) => {
                    import(/* @vite-ignore */ '../views/main' + url)
                        .then((res) => resolve(res))
                        .catch((err) => {
                            resolve(import('../views/' + 'notFound'))
                            console.log(err)
                        })
                })
            })
            return Module
        }

    }
}

export default new baseUtils()